查看原文
其他

【10-3】做数据分析,要不要掌握Linux系列:shell编程之分支与循环!

黄伟呢 数据分析与统计学之美 2023-05-04

1、分支:if与case

Ⅰ if语法的3种形式如下:

① 假如今天天气好,我就打羽毛球,跑步,洗澡。
结果如下:
[hadoop@image shell]$ . if.sh 
打羽毛球
跑步
洗澡
② 假如今天天气好,我就打羽毛球,跑步,洗澡;否则,我就呆在家学习。
结果如下:
[hadoop@image shell]$ . if-else.sh 
呆在家里学习
③ 成绩<60,不及格;60<=成绩<85,及格;成绩>=85,优秀。
结果如下:
[hadoop@image shell]$ . if-elif-else.sh 
及格
④ 下面说一个和python中input函数类似的函数,read -p :等待控制台输入。
结果如下:
[hadoop@image shell]$ . read.sh 
请输入您的分数:90
优秀
[hadoop@image shell]$ . read.sh 
请输入您的分数:70
及格
[hadoop@image shell]$ . read.sh 
请输入您的分数:40
不及格

Ⅱ case语法如下:

case和java中的switch有些相似:匹配是否和某个值相等。
语法和说明如下:
操作如下:
结果如下:
[hadoop@image shell]$ . case.sh start
start your play
[hadoop@image shell]$ . case.sh stop
stop your play
[hadoop@image shell]$ . case.sh stop 
stop your play

2、循环:where、for与until

Ⅰ where循环语法如下:

// 这个condition条件的写法,最好采用(())的方式,其余方式感觉没这个好;
// 当满足condition这个条件,才会执行下面的代码;
while condition
do
    command
done   
 

例: 利用where循环实现1+2+3+...+100

① 直接把100定死了;
结果如下:
[hadoop@image shell]$ . while.sh 
1到100的和为:5050
②  采用传参的方式;
结果如下:
[hadoop@image shell]$ . while.sh 10
1到10的和为:55
[hadoop@image shell]$ . while.sh 50
1到50的和为:1275
[hadoop@image shell]$ . while.sh 100
1到100的和为:5050
③ 控制台输入的方式;
结果如下:
[hadoop@image shell]$ . while.sh 
请输入你想输入的数:10
1到10的和为:55
[hadoop@image shell]$ . while.sh 
请输入你想输入的数:50
1到50的和为:1275
[hadoop@image shell]$ . while.sh 
请输入你想输入的数:100
1到100的和为:5050

Ⅱ for循环语法如下:

【for var in list】有以下3种写法:
for var in 枚举         # 不常用;
for var in {1..100}     # 这个也表示从1-100;
for ((i=0;i<=100;i++))  # 注意这种写法,和java中for循环写法类似;
操作如下:
结果如下:
第3种最为常见:

利用for循环,制作九九乘法表:分三步进行讲解。

① 先看看echo中的参数“-e”的作用是什么?
[hadoop@image shell]$ echo "我\n爱\n你"
我\n爱\n你
[hadoop@image shell]$ echo -e "我\n爱\n你"



// 从上述结果中可以看出:"-e"可以让程序处理"\t \n"等特殊字符。
② 再看看echo中的参数“-n”的作用是什么?
不加“-n”的时候:
加上“-n”的时候
从上面可以看出:"-n"可以让输出结果,不换行打印。
③ 制作九九乘法表
# 代码如下
[root@bigdata111 ~]# cat cacul.sh
#!/bin/bash
for((i=1;i<=9;i++))
do
    for ((j=1;j<=i;j++))
    do
        echo -ne "$i*$j=$[i*j]\t"
    done
   echo 
done
结果如下:

Ⅲ until循环语法如下:

// 一般 while 循环优于 until 循环,在极少数情况下,until循环更加有用。
// 不管怎么样,先执行循环体一次,直到某个条件满足condition,退出循环。
until condition
do
    command
done
操作如下:
结果如下:
[hadoop@image shell]$ . until.sh
0 1 2 3 4 5 6 7 8 9 10 

3、补充说明:

break和continue的用法,和java的用法一致。break表示跳出整个循环,continue表示跳出当前循环。
这里用一个形象的例子说明break和continue区别:
----------End----------
为了公平起见,黄同学选择在朋友圈赠书,同时已经送了好多本书籍了。好处:这样一来,大家中奖概率也大,都会有机会的,很多都是刚刚加了我的好友,都中奖了!
方式一:复制我微信号aili1127421544,添加我微信;
方式二:长按扫描下方二维码,添加我微信;
备注:黄同学朋友圈福利多多,欢迎查阅!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存